﻿using Microsoft.AspNetCore.Mvc;
using Nasty.Core.Authorization;
using Nasty.Core.LoadParams;
using Nasty.Core.Model;
using Nasty.Core.Registry;
using Nasty.Core.Session;
using Nasty.SystemModule.Areas.SerialNumberConfig.Model;
using Nasty.SystemModule.Areas.SerialNumberConfig.Params;
using System.Security.Principal;

namespace Nasty.SystemModule.SerialNumberConfig
{
    public interface ISerialNumberConfigService : IAutofacRegister
    {
        public Nasty.Core.Entity.System.SerialNumberConfig GetSerialNumberConfig(string id);

        public ResultData<Nasty.Core.Entity.System.SerialNumberConfig> SaveSerialNumberConfig(SerialNumberConfigModel model);

        public PageData<Nasty.Core.Entity.System.SerialNumberConfig> GetSerialNumberConfigPage(GetSerialNumberConfigPageParams @params);

        public ResultData<string> DeleteSerialNumberConfig(string id);

        public List<Nasty.Core.Entity.System.SerialNumberConfig> GetSerialNumberConfigs(GetSerialNumberConfigsParams @params);
    }

    public class SerialNumberConfigService : ISerialNumberConfigService
    {
        public required ISerialNumberConfigRepository SerialNumberConfigRepository { get; set; }

        public List<Nasty.Core.Entity.System.SerialNumberConfig> GetSerialNumberConfigs(GetSerialNumberConfigsParams @params)
        {
            return SerialNumberConfigRepository.GetSerialNumberConfigs(@params);
        }

        public ResultData<string> DeleteSerialNumberConfig(string id)
        {
            return SerialNumberConfigRepository.DeleteSerialNumberConfig(id);
        }

        public Nasty.Core.Entity.System.SerialNumberConfig GetSerialNumberConfig(string id)
        {
            return SerialNumberConfigRepository.GetSerialNumberConfig(id);
        }

        public ResultData<Nasty.Core.Entity.System.SerialNumberConfig> SaveSerialNumberConfig(SerialNumberConfigModel model)
        {
            return SerialNumberConfigRepository.SaveSerialNumberConfig(model);
        }

        public PageData<Nasty.Core.Entity.System.SerialNumberConfig> GetSerialNumberConfigPage(GetSerialNumberConfigPageParams @params)
        {
            return SerialNumberConfigRepository.GetSerialNumberConfigPage(@params);
        }
    }
}
